Định hướng thiết kế RISC RISC

Ý tưởng bắt đầu khi người ta nhận thấy rất nhiều tính năng trong các bộ VXL vốn được thiết kế nhằm giúp công việc lập trình trở nên dễ dàng hơn lại thường bị các phần mềm bỏ sót. Những tính năng này thông thường cần vài chu kỳ máy để thực thi. Cộng thêm sự cách biệt về hiệu suất giữa các CPUbộ nhớ chính đã dẫn đến nhiều kỹ thuật hoặc nhằm tổ chức lại quá trình thực thi trong bộ xử lý hoặc nhằm giảm bớt số lần truy xuất bộ nhớ.

Những năm cuối của thập niên 1970, các nhà nghiên cứu của IBM (và cả một số dự án khác) đã chứng minh rằng phần lớn các phương pháp đánh địa chỉ trực giao thường bị các chương trình bỏ qua. Đây chính là kết quả không mong đợi do sử dụng các trình biên dịch cấp cao thay vì sử dụng hợp ngữ. Các trình dịch tại thời điểm đó không đủ khả năng để tận dụng hết tính năng của các bộ VXL CISC; chủ yếu là do sự khó khăn trong thiết kế trình dịch. Trình biên dịch càng trở nên phổ biến thì các tính năng này lại càng bị bỏ quên.

Một nghiên cứu khác cũng chỉ ra rằng những tính năng này ít được dùng vì thực ra chúng được thực thi chậm hơn một nhóm lệnh cùng thực hiện tác vụ đó. Đây giống như một nghịch lý của quá trình thiết kế VXL, người thiết kế không có đủ thời gian để tối ưu cho tất cả các lệnh, do đó họ chỉ chú trọng đến những lệnh thường được sử dụng nhiều nhất. Ví dụ cụ thể nhất có lẽ là lệnh INDEX của CPU máy VAX, sẽ nhanh hơn từ 45% đến 60% nếu lệnh này được thay bằng một nhóm các lệnh VAX đơn giản khác.

Cũng trong thời gian này, CPU bắt đầu hoạt động nhanh hơn bộ nhớ. Thậm chí trong thập niên 1970, người ta cho rằng điều này sẽ còn tiếp tục không dưới 1 thập niên nữa, và tới lúc đó CPU sẽ nhanh hơn bộ nhớ hàng chục tới hàng trăm lần. Có lẽ đã đến lúc CPU cần thêm nhiều thanh ghi (sau này gọi là cache) để có thể hoạt động ở tốc độ cao hơn. Những thanh ghibộ nhớ đệm mới sẽ cần khoảng trống trên bo mạch hoặc trên chip được tạo ra nếu giảm sự phức tạp của CPU.

Tới lúc này, một phần đóng góp cho kiến trúc RISC đến từ thực tế đo đạc những chương trình trong thế giới thực. Andrew Tanenbaum từ tổng kết rất nhiều đo đạc này đã chỉ ra rằng hầu hết những CPU lúc bấy giờ đều được thiết kế thừa quá mức. Ví dụ, ông cho rằng 98% các hằng hoàn toàn có thể biểu diễn bằng 13 bit, trong khi đó các CPU được thiết kế theo bội số của 8 thường là 8, 16 hoặc 32. Do đó nếu CPU cho phép các hằng được lưu trong những bit dư của mã lệnh sẽ làm giảm đi rất nhiều lần truy xuất bộ nhớ. Thay vì phải đọc từ bộ nhớ hay từ thanh ghi, các hằng đã ở ngay đó khi CPU cần, vì thế quá trình thực thi sẽ nhanh hơn. Tất nhiên điều lại này yêu cầu mã lệnh phải thật nhỏ để những lệnh 32 bit có thể chứa được những hằng tương đối lớn.

Những chương trình trong thực tế thường tốn phần lớn thời gian để thực hiện một số tác vụ đơn giản, do đó một số nhà nghiên cứu hướng tới việc tối ưu hóa những tác vụ này. Do xung nhịp (clock rate) của CPU bị giới hạn bởi thời gian thực hiện lệnh chậm nhất, nên nếu tối ưu lệnh này (có thể bằng cách giảm số phương pháp đánh địa chỉ mà nó hỗ trợ) sẽ khiến cho toàn bộ tập lệnh được thực thi nhanh hơn nhiều. Mục tiêu của RISC chính là đơn giản hóa các lệnh, để mỗi lệnh có thể được thực thi chỉ trong 1 chu kỳ máy. Việc tập trung đơn giản hóa các lệnh đã cho ra đời các loại "Máy tính với tập lệnh được đơn giản hóa" - RISC.

Rất tiếc cụm từ "Máy tính với tập lệnh được đơn giản hóa" thường bị hiểu sai là máy tính với tập lệnh ít hơn các máy tính khác. Thực ra RISC lại thường có tập lệnh rất lớn. Cũng từ khuynh hướng đơn giản hóa đó, một số thiết kế thú vị ra đời như MISC (Minimal Instruction Set Computer - Máy tính với tập lệnh tối thiểu) hay OISC (One Instruction Set Computer) với những máy tính như Transport Triggered Architectures, trong khi các thiết kế khác đi sâu vào vấn đề Turing tarpit.

Điểm khác biệt thực sự giữa RISC so với CISC là nguyên tắc thực hiện mọi thứ trong các thanh ghi, đọc và lưu dữ liệu vào các thanh ghi. Do đó để tránh hiểu lầm nhiều nhà nghiên cứu thích dùng thuật ngữ load-store.

Qua thời gian, các kỹ thuật thiết kế cũ được gọi là CISC (Complex Instruction Set Computer – Máy tính với tập lệnh phức tạp), dù rằng thuật ngữ này thường chỉ được dùng với mục đích so sánh.

Giờ đây để thực hiện cùng một công việc, chương trình được viết với những lệnh đơn giản thay vì với một lệnh phức tạp, tổng số các lệnh phải đọc từ bộ nhớ nhiều hơn do đó cũng mất nhiều thời gian hơn. Tại thời điểm đó người ta chưa biết khuyết điểm này có còn đảm bảo sự ưu việt hơn về hiệu suất của RISC hay không, và hầu như đó cũng đã là một cuộc chiến dai dẳng về khái niệm RISC.

Liên quan